Dedupable memory provides a way to increase the “available” memory in a system. By detecting duplicate data and storing only a single copy of the data, storage that might otherwise be used to store the duplicate data copies may be used to store other data. More particularly, the various different applications requesting access to the same data values, even though the requests use different addresses, may all be directed to the same physical address. Since two, three, or more different logical addresses may map to the same physical address, the storage that would otherwise be needed for the additional copies of the data may be used to store other data, making it appear that the memory stores more overall data than it is physically capable of storing.
But dedupable memory introduces its own complications as well. Managing which addresses point to the same data is difficult, and data accesses, both reads and writes, may end up being slower than in other forms of storage. While not necessarily a huge difficulty when using data that is relatively slow to access (such as hard disk drives), this delay may be a significant limitation when applied to faster storage devices. And the faster the storage device normally operates, the greater the overall implication of data deduplication may become. For example, Dynamic Random Access Memory (DRAM) accesses would be much more sensitive to the delays associated with data deduplication Solid State Disks (SSDs) or other forms of flash memory, which in turn are more sensitive to delay than hard disk drives.
A need remains for a way to use dedupable memory in caches to speed up access to data in backend memory.